/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 石方旭
 * Date: 2022-04-13
 * Time: 21:33
 */

class Solution {
    //     public void moveZeroes(int[] nums) {
//          int fastIndex = 0;
//          int slowIndex = 0;
//          if (nums == null || nums.length <= 1) {
//             return;
//          }
//          for(fastIndex = 0;fastIndex< nums.length;++fastIndex) {
//              if(nums[fastIndex]!=0) {
//                  nums[slowIndex] = nums[fastIndex];
//                  slowIndex++ ;
//              }
//          }
//          //此时已经把0删除掉了之后把slowIndex~fastIndex之间的全部置0
//          for(int i =slowIndex;i<fastIndex;++i) {
//              nums[i] = 0;
//          }
//     }
    public void moveZeroes(int[] nums)  {
        int length;
        if (nums == null || (length = nums.length) == 0) {
            return;
        }
        int j = 0;
        for (int i = 0; i < length; i++) {
            if (nums[i] != 0) {
                if (i > j) {// #1
                    nums[j] = nums[i];
                    nums[i] = 0;
                }
                j++;
            }
        }
    }
}
// class Solution {
// 	public void moveZeroes(int[] nums) {
// 		if(nums==null) {
// 			return;
// 		}
// 		//两个指针i和j
// 		int j = 0;
// 		for(int i=0;i<nums.length;i++) {
// 			//当前元素!=0，就把其交换到左边，等于0的交换到右边
// 			if(nums[i]!=0) {
// 				int tmp = nums[i];
// 				nums[i] = nums[j];
// 				nums[j++] = tmp;
// 			}
// 		}
// 	}
// }
class Solution1 {
    public void moveZeroes(int[] nums) {
        //左边找0，右边找非0，然后交换
        int leftIndex =0;
        int rightIndex = 0;
        while(leftIndex<nums.length) {
            if(nums[leftIndex]!=0) {
                int tmp = nums[leftIndex];
                nums[leftIndex] = nums[rightIndex];
                nums[rightIndex] = tmp;
                leftIndex++;
                rightIndex++;
            }else {
                leftIndex++;
            }
        }
    }
}
public class TestLeetCode {
    public static void main(String[] args) {

    }
}
